<?php

Class Nivel_Model extends CI_Model {

    public function listarTodos() {
        $this->db->select('id, nivel_acesso, nivel_descricao');
        $this->db->from('niveis');
        $query = $this->db->get();
        return $query->result();
    }

    function numero_romano($numero) {
        if ($numero <= 0 || $numero > 3999) {
            return $numero;
        }

        $n = (int) $numero;
        $y = '';

        // Nivel 1
        while (($n / 1000) >= 1) {
            $y .= 'M';
            $n -= 1000;
        }
        if (($n / 900) >= 1) {
            $y .= 'CM';
            $n -= 900;
        }
        if (($n / 500) >= 1) {
            $y .= 'D';
            $n -= 500;
        }
        if (($n / 400) >= 1) {
            $y .= 'CD';
            $n -= 400;
        }

        // Nivel 2
        while (($n / 100) >= 1) {
            $y .= 'C';
            $n -= 100;
        }
        if (($n / 90) >= 1) {
            $y .= 'XC';
            $n -= 90;
        }
        if (($n / 50) >= 1) {
            $y .= 'L';
            $n -= 50;
        }
        if (($n / 40) >= 1) {
            $y .= 'XL';
            $n -= 40;
        }

        // Nivel 3
        while (($n / 10) >= 1) {
            $y .= 'X';
            $n -= 10;
        }
        if (($n / 9) >= 1) {
            $y .= 'IX';
            $n -= 9;
        }
        if (($n / 5) >= 1) {
            $y .= 'V';
            $n -= 5;
        }
        if (($n / 4) >= 1) {
            $y .= 'IV';
            $n -= 4;
        }

        // Nivel 4
        while ($n >= 1) {
            $y .= 'I';
            $n -= 1;
        }

        return $y;
    }

    public function novoNivel($acesso) {
        if (is_numeric($acesso)):
            $id = ($this->getLastInserted() + 1);
            $data = array('id' => $id, 'nivel_acesso' => '1', 'nivel_descricao' => 'Nivel ' . $this->numero_romano($id));
            if ($this->db->insert('niveis', $data))
                return true;
            else
                return "Erro ao efetuar o cadastro!";
        else:
            return "Opção inválida! Favor selecionar uma opção da lista";
        endif;
    }

    public function getLastInserted() {

        $this->db->select('id');
        $this->db->from('niveis');
        $this->db->order_by("id", "desc");
        $this->db->limit('1', '0');
        $query = $this->db->get();
        $data = $query->result();

        return $data[0]->id;
    }

    public function verificaNivel($nivel) {
        $this->db->select('id');
        $this->db->from('niveis');
        $this->db->where('id', $nivel);

        $query = $this->db->get();

        if ($query->num_rows() == 1)
            return $query->result();
        else
            return false;
    }
    


}
